// 导入koa
const Koa = require('koa')
// 创建koa服务器
const app = new Koa()
const { koaBody } = require('koa-body');
// 导入cors跨域
const cors = require('koa-cors')
//导入router
const router = require('koa-Router')();
var bodyParser = require('koa-body-parser');
//获取token加密jwt
var jwt = require('jsonwebtoken');
const fs=require('fs')
const path=require('path')
// 定义 JSON 数据文件的路径
const userpath=path.join(__dirname,'../'+'Data/user.json')
const rolepath=path.join(__dirname,'../'+'Data/role.json')
const routerpath=path.join(__dirname,'../'+'Data/router.json')
// 使用中间件
app.use(koaBody()) // 处理请求体数据
app.use(bodyParser()) // 解析请求体数据
app.use(cors()) // 处理跨域请求

router.post('/login',ctx=>{
    let {username,password}=ctx.request.body; 
     // 读取用户、角色和路由数据
    let userdata=JSON.parse(fs.readFileSync(userpath,'utf-8'))
    let roledata=JSON.parse(fs.readFileSync(rolepath,'utf-8'))
    let routerdata=JSON.parse(fs.readFileSync(routerpath,'utf-8'))
    // 检查用户名和密码是否匹配
    let flag=userdata.some(item=>item.username===username&&item.password===password)
    const users=userdata.find(item=>item.username===username)
    const role=roledata.find(item=>item.id===users.roleid)
    if(!flag){
        ctx.body={
            code:401,
            msg:'账号或密码错误！'
        }
    }else{
        ctx.body={
            code:200,
            msg:'登录成功！',
            token:jwt.sign({
                username,
                password
            },'jhdwufuiehfih',{expiresIn:'2h'}),
            users,
            rolename:role.rolename,
            router:routerdata[role.routers]// 返回与角色关联的路由数据
        }
    }
})

router.get('/listone',ctx=>{
    ctx.body=dataone
})

app.use(router)
// 监听端口号
app.listen(3000, () => {
  console.log('端口3000启动成功！')
})